package com.eupmt.lab3.controllers.impl;

import com.eupmt.lab3.controllers.IDistribuidorController;
import com.eupmt.lab3.domain.Distribuidor;
import com.eupmt.lab3.domain.Producte;
import com.eupmt.lab3.persistence.ibatis.dao.DistribuidorDaoManager;
import com.eupmt.lab3.utils.Log;
import java.util.List;

/**
 *
 * @author Aarón
 */
public class DistribuidorController implements IDistribuidorController {

    //Atributs.
    protected static DistribuidorController instance = null;
    DistribuidorDaoManager dao = null;
    private Log log = null;

    //Constructors.
    private DistribuidorController() {
        log = new Log();
    }

    //Methods
    public void insertDistribuidor(Distribuidor distribuidor) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        dao.insertDistribuidor(distribuidor);
    }

    public void updateDistribuidor(Distribuidor distribuidor) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        dao.updateDistribuidor(distribuidor);
    }

    public void deleteDistribuidor(Distribuidor distribuidor) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        dao.deleteDistribuidor(distribuidor);
    }

    public Distribuidor getDistribuidorById(int idDistribuidor) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        return dao.getDistribuidorById(idDistribuidor);
    }

    public Distribuidor getDistribuidorByCif(String cif) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        return dao.getDistribuidorByCif(cif);
    }

    public Distribuidor getDistribuidorByProducte(Producte producte) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        return dao.getDistribuidorByProducte(producte);
    }

    public List<Distribuidor> getDistribuidorsLikeNom(String nom) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        return dao.getDistribuidorsLikeNom(nom);
    }

    public void saveDistribuidor(Distribuidor distribuidor) throws Exception {
        dao = DistribuidorDaoManager.getInstance();
        dao.saveDistribuidor(distribuidor);
    }

    // Patró Singleton
    public static DistribuidorController getInstance() {
        if (instance == null) {
            instance = new DistribuidorController();
        }
        return instance;
    }
}
